package com.bedrock.project.inside.service;

import com.bedrock.project.inside.entity.WorkHourStat;
import com.bedrock.project.inside.vo.request.WorkHourStatReqVo;
import com.bedrock.project.inside.vo.response.ProjectStatResVo;
import com.bedrock.project.inside.vo.response.SaleStatResVo;
import com.bedrock.project.inside.vo.response.UserStatResVo;
import com.bedrock.project.inside.vo.response.WorkHourStatResVo;

import java.util.List;

/**
 * 工时统计Service接口
 * 
 * @author toby.zhang
 * @date 2020-04-30
 */
public interface IWorkHourStatService
{
    /**
     * 查询工时统计
     * 
     * @param id 工时统计ID
     * @return 工时统计
     */
    public WorkHourStat selectWorkHourStatById(Long id);

    /**
     * 查询工时统计列表
     * 
     * @param workHourStat 工时统计
     * @return 工时统计集合
     */
    public List<WorkHourStat> selectWorkHourStatList(WorkHourStat workHourStat);

    /**
     * 新增工时统计
     * 
     * @param workHourStat 工时统计
     * @return 结果
     */
    public int insertWorkHourStat(WorkHourStat workHourStat);

    /**
     * 修改工时统计
     * 
     * @param workHourStat 工时统计
     * @return 结果
     */
    public int updateWorkHourStat(WorkHourStat workHourStat);

    /**
     * 批量删除工时统计
     * 
     * @param ids 需要删除的工时统计ID
     * @return 结果
     */
    public int deleteWorkHourStatByIds(Long[] ids);

    /**
     * 删除工时统计信息
     * 
     * @param id 工时统计ID
     * @return 结果
     */
    public int deleteWorkHourStatById(Long id);

    /**
     * 工时统计
     */
    public void workHourStatisticsByDay();

    /**
     * 查询项目维度工时报表统计列表
     * @param workHourStatReqVo 工时统计
     * @return 工时报表统计集合
     */
    public List<ProjectStatResVo> selectProjectStatList(WorkHourStatReqVo workHourStatReqVo);

    /**
     * 查询工时维度工时报表统计列表
     * @param workHourStatReqVo 工时统计
     * @return 工时报表统计集合
     */
    public List<WorkHourStatResVo> selectWorkHourStatDetail(WorkHourStatReqVo workHourStatReqVo);

    /**
     * 查询工时维度工时报表统计图表
     * @param workHourStatReqVo 工时统计
     * @return 工时报表统计图表信息
     */
    public Object selectWorkHourStatChart(WorkHourStatReqVo workHourStatReqVo);

    /**
     * 查询个人维度工时报表统计列表
     * @param workHourStatReqVo 工时统计
     * @return 工时报表统计集合
     */
    public List<UserStatResVo> selectUserStatList(WorkHourStatReqVo workHourStatReqVo);

    /**
     * 查询销售维度工时报表统计列表
     * @param workHourStatReqVo 工时统计
     * @return 工时报表统计集合
     */
    public List<SaleStatResVo> selectSaleStatList(WorkHourStatReqVo workHourStatReqVo);
}
